#include<bits/stdc++.h>
#define sd(n) scanf("%d",&n) 
#define sld(n) scanf("%lld",&n)
#define pd(n) printf("%d", (n))
#define pld(n) printf("%lld", n)
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define fi first
#define se second
const int N = 2e5;
const int maxn = 1e6;
typedef long long int ll;
using namespace std;
//----------------------------------------------------------------------------//
int lowbit(int x)//取这个数的从低位向高位的第一个1和后面的0
{
	return x & -x;
}
int a[N + 10];
void solve()
{
	int n;
	sd(n);
	int ok = 0;
	int mi = 0x7fffffff;
	for (int i = 0; i < n; i++)
	{
		sd(a[i]);
		if (a[i] % 2 == 0)
		{
			ok++;
			mi = min(lowbit(a[i]), mi);//取最小的1加后位0的数字

		}
	}

	if (ok == 0)
	{
		pd(0);
		puts("");
		return;
	}

	if (ok < n)
	{
		pd(ok);
		puts("");//有奇有偶数,答案为偶数,odd+even==odd
		return;
	}

	if (ok == n)//全为偶数,把最容易变成奇数的一个数变为奇数然后按上面的方法
	{
		int cnt = 0;
		while (mi!=1)//对数字一直除2直到为1及这个数原来的数的2进制第一位变为1,及为偶数
		{
			mi /= 2;
			cnt++;
		}
		pd(cnt + n - 1);//odd+even==odd,有多少偶数就输出偶数+原来把一个数变成奇数的最小操作
		puts("");
		return;
	}
}

int main()
{
	int T;
	sd(T);
	while (T--)
	{
		solve();
	}
	return 0;
}
